Υπάρχει ένα πρόβλημα με τις λειτουργίες compact & repair: Το ADO.NET δεν τις υποστηρίζει (και γενικά δεν είναι πολύ φιλικό προς τις access mdb databases τις οποίες θεωρεί λίγο ..παλιές για τα γούστα του).
(Αυτός έχει βάλει τον κώδικα΄του σε ένα event handler, αλλά νομίζω ότι γενικότερα είναι κατανοητή η ιδέα. Το databasename είναι το physical path της access database).
Private Sub mnuRepairCompact_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles mnuRepairCompact.Click
Dim db As DAO.DBEngine
Dim sUFN As String
Dim sFN As String = _
System.IO.Path.GetFileNameWithoutExtension(DatabaseName)
Try
sUFN = AppPath & "\" & sFN & Format(Now, "MMddyyyyHHmmss") & _
".mdb"
Rename(DatabaseName, sUFN)
db = New DAO.DBEngine()
db.CompactDatabase(sUFN, AppPath & "\" & sFN)
Catch ex As System.Exception
StructuredErrorHandler(ex)
End Try
End Sub
Σχετικό άρθρο της Microsoft εδώ (για εναλλακτικό τρόπο):
http://support.microsoft.com/kb/306287
Σωτήρης Φιλιππίδης
DotSee Web Services